package com.dys.test08;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * @className: com.dys.test07.SendTest
 * @description: 发送方法
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/21 下午10:53
 */
public class SendTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) throws IOException {
        System.out.println("学生上线......");
        // 1.准备套接字,指定发送方的端口号
        DatagramSocket ds = new DatagramSocket(8888);

        // 2.准备数据包
        String sendData = "你好,我是发送方";
        byte[] dataBytes = sendData.getBytes();

        /*
         * 需要四个参数；
         * 1.指的是传送数据转为字节数组
         * 2.字节数组的长度
         * 3.封装接收方的ip
         * 4.指定接收方的端口号
         * */
        DatagramPacket dp = new DatagramPacket(dataBytes, dataBytes.length, InetAddress.getByName("localhost"), 9999);
        // 3.发送
        ds.send(dp);

        // 接收 接收方的回复
        byte[] b = new byte[1024];
        DatagramPacket dp2 = new DatagramPacket(b, b.length);
        // 3.接收对方的数据包, 然后放入dp数据包中填充,接收完后，dp里面就填充好内容了
        ds.receive(dp2);
        // 4.取出数据
        byte[] data = dp2.getData();
        // 取出数据包中的有效长度
        String receiveData = new String(data, 0, dp2.getLength());
        System.out.println("接收方回复我说：" + receiveData);

        // 4.关闭资源
        ds.close();
    }
}
